package com.woniuxy.config.rabbitmq;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;

/**
 * @Author: 马宇航
 * @Description: 用来配置，带有ttl过期时间的队列（里面的消息，只能存活这个时间)
 * @DateTime: 25/10/28/星期二 10:54
 * @Component: 成都蜗牛学苑
 **/
@Configuration
public class TTLQueueConfig {
    @Bean
    public Queue ttlQueue(){
        Map<String,Object> args = new HashMap<>();
        //设置队列的消息过期时间为2秒
        args.put("x-message-ttl",2000);
        //设置，死信交换机的名字
        args.put("x-dead-letter-exchange","deathExchange");
        //设置，死信交换机的路由键
        args.put("x-dead-letter-routing-key","dead");
        return new Queue("ttl.queue",true,false,false,args);
    }
    @Bean
    public Exchange ttlExchange(){
        return new DirectExchange("ttl.exchange");
    }
    @Bean
    public Binding ttlBinding(){
        return BindingBuilder.bind(ttlQueue()).to(ttlExchange()).with("ttl.routing.key").noargs();
    }
}
